package etc;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;


import modelo.bean.Aluno;
import modelo.bean.Usuario;
import modelo.dao.GenericoDAO;
import modelo.dao.impl.UsuarioDAOImpl;



@Path("usuario")
public class ServicoAluno {
	
	private Usuario usuario;
	
	private Aluno aluno;
	
	private List<Aluno> listaDeAlunos;
	
	//Trocar por uma classe do pacote controle
	private GenericoDAO genericoDAO;
	
	public ServicoAluno(){
		usuario = new Usuario();
		//Trocar por uma instancia do pacote controle
		genericoDAO = new UsuarioDAOImpl(usuario);
	}
	
	@GET
	@Produces({ MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
	@Path("{id:[0-9]*}")
	public Aluno recuperarAluno(@PathParam("id") Long id){
		//Trocar por um método do pacote controle;
		aluno = (Aluno) genericoDAO.recuperar(id);
		System.out.println("WS aluno,"+aluno.getMatricula()+" "+aluno.getSemestre());
		return aluno;
	}
	
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	@Path("/auth")
	public Usuario autentica(@HeaderParam("login") String login, @HeaderParam("senha") String senha){
		System.out.println("Caiu no aluno");
		UsuarioDAOImpl u = (UsuarioDAOImpl) genericoDAO;
		//usuario = u.autentica(login, senha);
		return usuario;
	}

	
	@POST
	@Consumes(MediaType.APPLICATION_JSON)
	@Produces(MediaType.APPLICATION_JSON)
	public String salvar(Usuario u) {
		try {
			usuario = u;
			genericoDAO.changeSeed(usuario);
			genericoDAO.criar();
		} catch (Exception e) {
			System.out.println("Erro ao salvar Colecao: "+e.getMessage());
			e.printStackTrace();
		}
		return "Sucesso ao salvar";
	}

	protected Aluno getAluno() {
		return aluno;
	}

	protected void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	protected List<Aluno> getListaDeAlunos() {
		return listaDeAlunos;
	}

	protected void setListaDeAlunos(List<Aluno> listaDeAlunos) {
		this.listaDeAlunos = listaDeAlunos;
	}
}
